package main

import (
	"fmt"
	"net"
	"net/rpc/jsonrpc"
)

// World 定义类对象
type World struct {
}

// HelloWorld 绑定类方法
func (arg *World) HelloWorld(name string, resp *string) error {
	*resp = name + " hello from server!"
	return nil
	//return errors.New("未知的错误")
}

func main() {

	//1. 注册rpc服务，绑定对象方法
	//err := rpc.RegisterName("server_name", new(World))
	//if err != nil {
	//	fmt.Println("register rpc service failed", err)
	//	return
	//}

	RegisterService(new(World))

	//2. 设置监听
	listener, err := net.Listen("tcp", "127.0.0.1:8080")
	if err != nil {
		fmt.Println("net.Listen err: ", err)
		return
	}
	defer listener.Close()

	fmt.Println("开始监听.....")
	//3. 建立连接
	conn, err := listener.Accept()
	if err != nil {
		fmt.Println("Accept err: ", err)
		return
	}
	defer conn.Close()
	fmt.Println("链接成功....")

	//4. 绑定服务
	//rpc.ServeConn(conn)
	jsonrpc.ServeConn(conn)

}
